package com.zxy.leetcode.lcof;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/
 *
 * 第一个只出现一次的字符
 * 在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。 s 只包含小写字母。
 */
public class Test50 {

    public static void main(String[] args) {
        Test50 test = new Test50();
        System.out.println(test.firstUniqChar("abaccdeff"));
    }

    public char firstUniqChar(String s) {
        if (s == null) {
            return ' ';
        }

        Map<Character, Integer> map = new LinkedHashMap<>();
        for (int i=0; i<s.length(); i++) {
            Character c = s.charAt(i);
            Integer count = map.get(c);
            if (count == null) {
                map.put(c, 1);
            }else if(count == 1) {
                // 省点计算，大于2的没必要累加了
                map.put(c, 2);
            }
        }
        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
            if (entry.getValue() == 1) {
                return entry.getKey();
            }
        }

        return ' ';
    }

}
